NOTE

1.37 MySQL Flush

1. 什么是Flush - 当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页” - Flush就是把脏页刷入磁盘 2. Flush触发时机 - 当出现几种情况的时候会把 - redo-log写满了(尽量避免,

Database创建于 更新于 约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 什么是Flush

  • 当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”
  • Flush就是把脏页刷入磁盘

2. Flush触发时机

  • 当出现几种情况的时候会把
    • redo-log写满了(尽量避免,会阻塞住所有的更新)
    • 内存满了
    • MySQL认为系统空闲的时候(没啥影响)
    • MySQL正常关闭的时候(没啥影响)

Flush的影响

  • MySQL性能会抖动一下

3. InnoDB刷脏页的控制策略

  • 先使用fio测试磁盘IOPS,再将innodb_io_capacity设置为对应值。例如原笔记使用以下命令测试:
fio -filename=$filename -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=16k -size=500M -numjobs=10 -runtime=10 -group_reporting -name=mytest

讨论

使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看